package com.techopropio.bfh.dao;

import com.mysql.jdbc.Connection;
import com.sun.rowset.CachedRowSetImpl;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.sql.rowset.CachedRowSet;

/**
 *
 * @author Home
 */
public class Conexion {
    private static Connection conexion;
    public static void main(String[] args) {
        obtenerConnexion();
    }

    public Conexion() {
        conexion = obtenerConnexion();
    }
    
    public static Connection retornatConn(){
        return conexion;
    }
    
    public static void close() throws SQLException{
        if(conexion!=null){
            conexion.close();
        }
    }
    
    public static Connection obtenerConnexion(){
        // Se mete todo en un try por los posibles errores de MySQL
        try
        {
            try {
                // Se registra el Driver de MySQL
                DriverManager.registerDriver(new org.gjt.mm.mysql.Driver());
            } catch (SQLException ex) {
                Logger.getLogger(Conexion.class.getName()).log(Level.SEVERE, null, ex);
            }
            
            // Se obtiene una conexión con la base de datos. Hay que
            // cambiar el usuario "root" y la clave "la_clave" por las
            // adecuadas a la base de datos que estemos usando.
            Connection conexion = (Connection) DriverManager.getConnection (
                "jdbc:mysql://localhost/bfh2","root", "root");
            
            // Se crea un Statement, para realizar la consulta
//            Statement s = (Statement) conexion.createStatement();
//            
//            // Se realiza la consulta. Los resultados se guardan en el 
//            // ResultSet rs
//            ResultSet rs = s.executeQuery ("select * from usuario");
//            
//            // Se recorre el ResultSet, mostrando por pantalla los resultados.
//            while (rs.next())
//            {
//                System.out.println (rs.getInt ("idUsuario") + " " + rs.getString (2)+ 
//                    " " + rs.getString(3));
//            }
            
            // Se cierra la conexión con la base de datos.
            //conexion.close();
            System.out.println("Conexion establecida");
            return conexion;
        }
        catch (Exception e)
        {
            
            e.printStackTrace();
            System.out.println("Error de Conexion");
            return null;
        }
    }
    
     public CachedRowSet Function(String sql) {
        try {
            Class.forName("org.gjt.mm.mysql.Driver");

            String url = "jdbc:mysql://localhost:3306/bfh2";
            java.sql.Connection con = DriverManager.getConnection(url, "root", "root");
            Statement s = con.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_READ_ONLY);
            
            ResultSet rs = s.executeQuery(sql);

            CachedRowSet crs = new CachedRowSetImpl();
            crs.populate(rs);

            rs.close();
            s.close();
            con.close();

            return crs;
        } catch (Exception e) {
            System.out.println(e.getMessage());
        }

        return null;
    }
    
}
